iT邦幫忙

2023 iThome 鐵人賽

DAY 20
0
SideProject30

UVA題型研究系列 第 20

DAY20:B2-Sequence

  • 分享至 

  • xImage
  •  

23 UVA11063 B2-Sequence
內容
所謂「B2數列」係指一正整數數列 1<= b1 < b2 < b3 ...,其中所有的 bi + bj (i <= j)皆不相等。

您的任務是判別某一數列是否為「B2數列」。

輸入說明
每筆測試資料有兩行,第一行代表該數列有 N 個數值(2 ≤ N ≤ 100),第二行則為該數列的N個數值。每個數值 bi 皆為整數,且 bi ≤ 10000。

輸出說明
每筆測試資料以一行輸出,且每筆輸出資料後均需輸出一空白行。格式請參考輸出範例。

範例輸入
4
1 2 4 8
4
3 7 10 14
5
13 14 15 16 17
範例輸出
Case #1: It is a B2-Sequence.

Case #2: It is not a B2-Sequence.

Case #3: It is not a B2-Sequence.
解題:判斷測資所給的數列是否為 B2-sequence,B2-sequence 的定義為數列中不會有任意兩數總和是相同的,且數列為 1 ≤ b1 < b2 < ……

#初始化case變數,用來記錄測試案例的編號
case = 1

#進入無窮迴圈,直到遇到EOFError例外才跳出迴圈
while True:
    try:
        # 如果case大於1,讀取兩次input(),但是不儲存其值
        if case > 1:
            input()
            input()
        #讀取一行數字,並將其轉換為整數列表
        a = list(map(int, input().split()))
    except EOFError:
        # 如果遇到EOFError例外,跳出迴圈
        break

    #初始化檢查結果變數c為1
    c = 1
    #創建一個空列表b,用來儲存兩數之和
    b = []

    #迴圈遍歷輸入的數字列表a
    for i in range(len(a)):
        # 如果數字小於等於前一個數字,或者數字小於1,將檢查結果變數c設為0,並跳出迴圈
        if i > 0 and a[i] <= a[i - 1] or a[i] < 1:
            c = 0
            break

    #再次迴圈遍歷a列表,檢查兩數之和是否在b列表中
    for j in range(i, len(a)):
        k = a[i] + a[j]
        #如果兩數之和不在b列表中,將其加入b列表
        if k not in b:
            b.append(k)
        else:
            # 如果兩數之和已經在b列表中,將檢查結果變數c設為0,並跳出迴圈
            c = 0
            break

    #根據檢查結果輸出結果訊息
    if c == 1:
        print("Case #{}: It is a B2-Sequence.".format(case))
    else:
        print("Case #{}: It is not a B2-Sequence.".format(case))
    print("")

    #更新案例編號
    case += 1

上一篇
DAY19:Square Numbers
下一篇
DAY21:Back to High School Physics
系列文
UVA題型研究30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言